#include<bits/stdc++.h>
using namespace std;
typedef long long ll;

struct p{
	int disa,disc,a,b,c;
	const bool operator<(const p& x)const{
		return disa==x.disa?disc<x.disc:disa>x.disa;
	}
};

void solve(){
    int n;
    cin>>n;
    vector<vector<int>> adj(n+1);
    vector<int> degree(n+1,0);
    vector<int> dis(n+1,0);
    bool f=true;
    for(int i=0;i<n-1;i++){
    	int u,v;
    	cin>>u>>v;
    	adj[u].push_back(v);
    	adj[v].push_back(u);
    	degree[u]++;
    	degree[v]++;
    	if(degree[u]>2||degree[v]>2){
    		f=false;
    	}
    }
    if(f){
    	cout<<-1<<'\n';
    	return;
    }

    queue<int> q;
    for(int i=1;i<=n;i++){
    	if(degree[i]==1){
    		q.push(i);
    	    degree[i]=0;
    	    dis[i]=1;
    	}
    }
    while(!q.empty()){
    	int u=q.front();
    	q.pop();
    	for(int i=0;i<adj[u].size();i++){
    		if(degree[adj[u][i]]==0)continue;
    		degree[adj[u][i]]--;
    		dis[adj[u][i]]=max(dis[adj[u][i]],dis[u]+1);
    		if(degree[adj[u][i]]==0){
    			q.push(adj[u][i]);
    		}
    	}
    }
    vector<p> res;
    int b=-1;
    for(int i=1;i<=n;i++){
    	if(adj[i].size()>=3){
            b=1;
    		int a=-1,mn=0x3f3f3f3f,c=-1,mx=-1;
		    for(int j=0;j<adj[i].size();j++){
		    	if(dis[adj[i][j]]>mx){
		    		mx=dis[adj[i][j]];
		    		a=adj[i][j];
		    	}
		    	if(dis[adj[i][j]]<mn){
		    		mn=dis[adj[i][j]];
		    		c=adj[i][j];
		    	}
		    }
		    res.push_back({mx,mn,a,i,c});
    	}
    }

    if(b==-1){
    	cout<<-1<<'\n';
    	return;
    }

    sort(res.begin(),res.end());

    // for(int i=1;i<=n;i++){
    // 	cout<<i<<' '<<dis[i]<<'\n';
    // }
    
    cout<<res[0].a<<' '<<res[0].b<<' '<<res[0].c<<'\n';

}

int main(){
    ios::sync_with_stdio(0);
    cin.tie(0),cout.tie(0);
    int t=1;
    cin>>t;
    while(t--){
        solve();
    }
    return 0;
}